/**
* Created with CLion.
* User:Lenovo
* Date:2023-05-16
* Time:3:53
* Description:双向带头循环链表
*/
#ifndef AWA_LIST_H
#define AWA_LIST_H

#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include <stdbool.h>

typedef int LTDataType;

typedef struct ListNode
{
    LTDataType data;
    struct ListNode *next;
    struct ListNode *prev;
} LTNode;

LTNode *LTInit();
void LTDestroy(LTNode *pHead);
void LTPrint(LTNode *pHead);
void LTPushBack(LTNode *pHead, LTDataType x);
void LTPopBack(LTNode *pHead);
void LTPushFront(LTNode *pHead, LTDataType x);
void LTPopFront(LTNode *pHead);
LTNode *LTFind(LTNode *pHead, LTDataType x);
void LTInsertBefore(LTNode *pos, LTDataType x);
void LTErase(LTNode *pos);
bool LTEmpty(LTNode *pHead);

#endif //AWA_LIST_H
